package com.vhall.component.entity.room.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.vhall.component.entity.inav.vo.SelectVideoData;
import com.vhall.component.entity.subject.enums.StatusEnum;
import com.vhall.component.framework.common.annotation.ParamName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author guoxin.wang
 * @date 2021/8/6 12:25
 */
@Data
public class RoomAdminListRspSingleVO extends RoomsEntityGuoXinVO implements Serializable {

    private static final long serialVersionUID = 3577526449616728351L;

    @JsonProperty(value = "il_id")
    private Integer ilId;

    @JsonProperty(value = "room_id")
    private String roomId;

    /**
     * 频道id
     */
    @JsonProperty("page_channel_id")
    @ParamName("page_channel_id")
    private Integer pageChannelId;

    /**
     * 所属频道-name
     */
    @ParamName(value = "page_channel_name")
    @JsonProperty(value = "page_channel_name")
    private String pageChannelName;

    @JsonProperty(value = "subject")
    private String subject;

    @JsonProperty(value = "account_id")
    private Integer accountId;

    @JsonProperty(value = "inav_id")
    private String inavId;

    @JsonProperty(value = "channel_id")
    private String channelId;

    @JsonProperty(value = "nify_channel")
    private String nifyChannel;

    @JsonProperty(value = "record_id")
    private String recordId;

    @JsonProperty(value = "start_time")
    private LocalDateTime startTime;

    @JsonProperty(value = "begin_time_stamp")
    private Integer beginTimeStamp;

    @JsonProperty(value = "introduction")
    private String introduction;

    @JsonProperty(value = "category")
    private Integer category;

    @JsonProperty(value = "cover_image")
    private String coverImage;

    @JsonProperty(value = "topics")
    private String topics;

    @JsonProperty(value = "layout")
    private Integer layout;

    @JsonProperty(value = "status")
    private Integer status;

    @JsonProperty(value = "isdelete")
    private Integer isDelete;

    @JsonProperty(value = "message_approval")
    private Integer messageApproval;

    @JsonProperty(value = "created_at")
    private LocalDateTime createdAt;

    @JsonProperty(value = "updated_at")
    private LocalDateTime updatedAt;

    @JsonProperty(value = "app_id")
    private String appId;

    @JsonProperty(value = "like")
    private Integer like;

    @JsonProperty(value = "deleted_at")
    private LocalDateTime deletedAt;

    @JsonProperty(value = "live_type")
    private Integer liveType;

    @JsonProperty(value = "warm_type")
    private Integer warmType;

    @JsonProperty(value = "warm_vod_id")
    private String warmVodId;

    @JsonProperty(value = "teacher_name")
    private String teacherName;

    @JsonProperty(value = "begin_live_time")
    private LocalDateTime beginLiveTime;

    @JsonProperty(value = "end_live_time")
    private LocalDateTime endLiveTime;

    @JsonProperty(value = "live_time")
    private String liveTime;

    @JsonProperty(value = "is_open_document")
    private Integer isOpenDocument;

    @JsonProperty(value = "live_mode")
    private Integer liveMode;

    @JsonProperty(value = "message_total")
    private Integer messageTotal;

    @JsonProperty(value = "mode")
    private Integer mode;

    @JsonProperty(value = "limit_type")
    private Integer limitType;

    @JsonProperty(value = "extend")
    private String extend;


    /**
     * 表中没有的字段
     */
    @JsonProperty(value = "desc")
    private String desc;

    @JsonProperty(value = "image")
    private String image;

    @JsonProperty(value = "live_room_type_str")
    private String liveRoomTypeStr;

    @JsonProperty(value = "name")
    private String name;

    /**
     * 和start_time一样
     */
    @JsonProperty(value = "begin_time")
    private LocalDateTime beginTime;

    @JsonProperty(value = "status_str")
    private String statusStr;

    @JsonProperty(value = "view_url")
    private String viewUrl;

    @JsonProperty(value = "watch_url")
    private String watchUrl;

    @JsonProperty(value = "nick_name")
    private String nickname;
    /**
     * 房间审核状态
     * 审核状态:
     * 0|待审核,-1|审核驳回,1|审核通过
     */
    @JsonProperty(value = "audit_status")
    private Integer auditStatus;

    /**
     * 房间审核状态
     * 审核状态:
     * 0|待审核,-1|审核驳回,1|审核通过
     */
    @JsonProperty(value = "audit_status_name")
    private String auditStatusName;
    /**
     * 房间审核备注
     */
    @JsonProperty(value = "audit_note")
    private String auditNote;

    /**
     * 分享简介
     */
    @JsonProperty(value = "share_introduction")
    @ParamName(value = "share_introduction")
    private String shareIntroduction;

    /**
     * 直播横竖屏 1横 2竖
     */
    @JsonProperty("video_type")
    @ParamName("video_type")
    private Integer videoType;

    /**
     * 曝光海报
     */
    @ParamName("poster_url")
    @JsonProperty("poster_url")
    private String posterUrl;

    /**
     * 设为热点标记位
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("hot_status")
    @ParamName("hot_status")
    private Integer hotStatus;

    /**
     * 推荐到优理宝首页标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("recommended_status")
    @ParamName("recommended_status")
    private Integer recommendedStatus;

    /**
     * 上下架标记，0 关、没上架，1开、上架
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("load_or_unload")
    @ParamName("load_or_unload")
    private Integer loadOrUnload;

    /**
     * 置顶标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("top_status")
    @ParamName("top_status")
    private Integer topStatus;

    @ApiModelProperty(value = "时长/秒")
    @ParamName("duration")
    private Integer duration;

    /**
     * 预约标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("reservation_status")
    @ParamName("reservation_status")
    private Integer reservationStatus;

    /**
     * 评论标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("comment_status")
    @ParamName("comment_status")
    private Integer commentStatus;

    /**
     * 房间与主播关联信息
     */
    @JsonProperty("anchor_infos")
    @ParamName("anchor_infos")
    private List<AnchorRoomLkDTO> anchorInfos;

    /**
     * 点播id
     */
    @ParamName("select_video_data")
    @JsonProperty("select_video_data")
    private SelectVideoData selectVideoData;

    /**
     * 审核人
     */
    @JsonProperty("reviewer")
    @ParamName("reviewer")
    private Integer reviewer;

    /**
     * 审核人
     */
    @JsonProperty("reviewer_name")
    @ParamName("reviewer_name")
    private String reviewerName;

    /**
     * 上架时间
     */
    @JsonProperty("load_or_unload_at")
    @ParamName("load_or_unload_at")
    private LocalDateTime loadOrUnloadAt;

    /**
     * 置顶时间
     */
    @JsonProperty("top_status_at")
    @ParamName("top_status_at")
    private LocalDateTime topStatusAt;

}
